import javax.swing.*;

import java.util.*;

class EntradaClientes extends Thread {

	private ArrayList<HiloEntrada> clienteEntrantesP;
	private JLabel fondo;
	private JTable jt_tabla_reportes;

	private Histograma histo;
	private int clientes_salen_caja;
	private int clientes_salen_ta;

	private int clientes_entran_caja;
	private int clientes_entran_ta;
	private JTextField jtf_velocidad_simulacion;
	
	private int b;
	private JTable jt2_tabla_reportes;
	private JTable jt3_tabla_reportes;

	/** ******************************************************************************** */

	public EntradaClientes(JLabel l, Histograma h, JTable jt_tabla_reportes,
			JTextField jtf_velocidad_simulacion,int b,JTable jt2_tabla_reportes,JTable jt3_tabla_reportes ) {
		fondo = l;
		histo = h;
		this.jt_tabla_reportes = jt_tabla_reportes;
		clienteEntrantesP = new ArrayList<HiloEntrada>();
		clientes_salen_caja = 1;
		clientes_salen_ta = 1;
		clientes_entran_caja = 1;
		clientes_entran_ta = 1;
		this.jtf_velocidad_simulacion = jtf_velocidad_simulacion;
		this.b=b;
		this.jt2_tabla_reportes = jt2_tabla_reportes;
		this.jt3_tabla_reportes=jt3_tabla_reportes;
	}

	public int getClientes_entran_caja() {
		return clientes_entran_caja;
	}

	public void setClientes_entran_caja(int clientes_entran_caja) {
		this.clientes_entran_caja = clientes_entran_caja;
	}

	public int getClientes_entran_ec() {
		return clientes_entran_ta;
	}

	public void setClientes_entran_ec(int clientes_entran_ec) {
		this.clientes_entran_ta = clientes_entran_ec;
	}

	public void incrementar_Cli_Salen_Caja() {
		clientes_salen_caja = clientes_salen_caja + 1;
	}

	public void incrementar_Cli_Salen_EC() {
		clientes_salen_ta = clientes_salen_ta + 1;
	}

	public void incrementar_Cli_Entran_Caja() {
		clientes_entran_caja = clientes_entran_caja + 1;
	}

	public void incrementar_Cli_Entran_EC() {
		clientes_entran_ta = clientes_entran_ta + 1;
	}	

	public int getClientes_salen_caja() {
		return clientes_salen_caja;
	}

	public void setClientes_salen_caja(int clientes_salen_caja) {
		this.clientes_salen_caja = clientes_salen_caja;
	}

	public int getClientes_salen_ec() {
		return clientes_salen_ta;
	}

	public void setClientes_salen_ec(int clientes_salen_ec) {
		this.clientes_salen_ta = clientes_salen_ec;
	}

	public void llenarClientes(int horaI, int horaF) {
		int cant = histo.cantClientesEntrantes(horaI, horaF);
		for (int i = 0; i < cant; i++)
			clienteEntrantesP.add(new HiloEntrada(fondo, histo, this,
					jt_tabla_reportes, jtf_velocidad_simulacion,b,jt2_tabla_reportes, jt3_tabla_reportes));

		this.start();
	}

	public void run() {
		for (int e = 0; e < clienteEntrantesP.size(); e++) {

			long dormir = (long) ((Math.random() * 7000) + 1000);

			clienteEntrantesP.get(e).start();

			jt_tabla_reportes.setValueAt(e + 1, 2, 1);

			try {
				Thread.sleep(dormir);//tiempo que duerme el hilo menos de 7 segundos
			} catch (Exception d) {
			}
			int r=1;
			try{
			sleep(Transformada.expo(3));
			}catch (InterruptedException er){}
			jt_tabla_reportes.setValueAt(r,21,1);
			double m=(Math.random()*2);
			if(m==1){
				jt_tabla_reportes.setValueAt(r,22,1);

			}
			if(m==0){
				jt_tabla_reportes.setValueAt(r,23,1);

			}
			r++;
		}
	}

	@SuppressWarnings("deprecation")
	public void suspender() {
		this.suspend();
	}
}